package cn.zebra.dev.admin.module.admin.service;

import cn.zebra.dev.admin.module.admin.entity.AdminRoleItemEntity;
import cn.zebra.dev.ibatis.plus.service.IService;
import cn.zebra.dev.ibatis.plus.utils.PageUtils;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;

/**
 * 后台角色关联(多对多)
 *
 * @author runnable
 * @date 2019-09-07 17:03:30
 */
public interface AdminRoleItemService extends IService<AdminRoleItemEntity> {

    PageUtils findPage(Map<String, Object> params);

    Long findRoleIdByAdminId(Long adminId);

    /**
     * 批量线程保存
     *
     * @param entityList 后台角色关联集合
     * @return 成功返回true 保存失败返回false
     */
    @Override
    boolean saveBatch(Collection<AdminRoleItemEntity> entityList);

    /**
     * 异步保存
     *
     * @param entity 后台角色关联
     * @return 异步回调对象
     */
    Future<Boolean> asyncSave(AdminRoleItemEntity entity);

    /**
     * 根据 admin_id 字段 查找role_id 集合
     *
     * @param adminId 后台用户id
     * @return 角色id集合
     */
    List<Long> findRoleIdListByAdminId(Long adminId);
}

